11 - Inteligentna kamera

Wprowadzenie do przetwarzania obrazów

Politechnika Poznańska, Instytut Robotyki i Inteligencji Maszynowej

Ćwiczenie laboratoryjne 11: inteligentna kamera

Powrót do spisu treści ćwiczeń laboratoryjnych

Wstęp

Wraz z rozwojem konwolucyjnych sieci neuronowych i głębokiego uczenia maszynowego, zaczęło powstawać wiele urządzeń, które pozwalają przyspieszać wnioskowanie takich sieci. Urządzenia te cechują się najczęściej bardzo dobrym stosunkiem wydajności do poboru energii. Niektóre urządzenia przyjmują postać pendrive jak Intel NCS 2, a niektóre niewielkich dysków przenośnych jak Google Coral. Powstają obecnie również produkty, które nie tylko przyspieszają wnioskowanie, ale potrafią równocześnie rejestrować obraz.

Przykładem takiego produktu jest kamera OpenCV AI Kit: OAK—1, która potrafi nagrywać wideo w 4k@30fps i wyposażona jest w zintegrowane jednostki przetwarzające obraz Intel Myriad X. Podczas tego laboratorium, zostanie ona wykorzystana do zbudowania rzeczywistej aplikacji systemu wizyjnego.

Dane

Pobierz paczkę ze skryptami do zadań.

Informacja o środowisku wirtualnym

UWAGA Ta instrukcja wymaga systemu operacyjnego Ubuntu oraz zainstalowanych dodatkowych bibliotek. Tworząc nowy projekt w IDE PyCharm, wykorzystaj poprzednio skonfigurowane środowisko virtualenv. Ścieżka do interpretera Python to /home/put/.virtualenvs/opencvai/bin/python.

Zadanie wstępne

Wykorzystując klasyfikator z zajęć o sieciach neuronowych (instrukcja C), przygotuj odpowiednio model do wykorzystania jednostki wnioskującej w kamerze i uruchom aplikację wizualizującą.

Kroki:

  1. Zmodyfikuj skrypt 00_convert_onnx_to_blob.py ustawiając ścieżkę do swojego modelu. Zwróć uwagę na nazwę pliku. Postaraj się zachować oryginalne nazewnictwo clf_resnet18.onnx.

  2. Uruchom skrypt. Jeśli wszystko się powiodło, w terminalu powinna pojawić się wiadomość:

    Downloading ../_data/11/clf_resnet18_openvino_2021.4_5shave.blob...
    Success! Success! Model path: .../clf_resnet18_openvino_2021.4_5shave.blob
  3. Zmodyfikuj w programie scripts/11/01_own_classifier_infer.py zmienną labels ustawiając własne etykiety klas.

  4. Uruchom program i zweryfikuj jego działanie korzystając z inteligentnej kamery. Przykładowe, docelowe działanie programu przedstawiono na filmie.

Zadania do samodzielnej realizacji

  1. Uruchom skrypt scripts/11/gesture_recogniotion/main.py i zweryfikuj działanie programu.
  2. Twoim zadaniem jest sterowanie wirtualnym pojazdem z wykorzystaniem gestów dłoni. Dlatego zmodyfikuj funkcję recognize_gesture ze skryptu scripts/11/gesture_recogniotion/Gesture.py w taki sposób, żeby na podstawie gestu (odpowiedniego ułożenia palców dłoni) wykonywać jedną z 4 akcji:
    • PASS (dłoń otwarta),
    • ACTION (pięść zaciśnięta),
    • LEFT (otwarty tylko palec wskazujący),
    • RIGHT (otwarte dwa palce, tzw. Victoria).

UWAGA Wykorzystaj do tego informację o zgiętych palcach. Zbuduj odpowiednie instrukcje warunkowe, które do zmiennej r.gesture przypiszą odpowiednią akcję.
Przykładowe działanie programu przedstawiono na filmie.

Zadania dodatkowe

Zapoznaj się z innymi, przykładowymi programami stworzonymi do inteligentnej kamery przez programistów depthai. Może któreś zastosowanie cię zainteresowało? Sprawdź demo!